{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "linearRegressionOneVariable",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "Yh0AtXXOXVuD",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from __future__ import absolute_import, division, print_function, unicode_literals\n",
        "\n",
        "import pathlib\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import seaborn as sns"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zP5cGu1RWLxw",
        "colab_type": "code",
        "outputId": "d8a99926-fd85-4614-97be-8ef55a4c566b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "try:\n",
        "  # %tensorflow_version only exists in Colab.\n",
        "  %tensorflow_version 2.x\n",
        "except Exception:\n",
        "  pass\n",
        "import tensorflow as tf\n",
        "from tensorflow import keras\n",
        "from tensorflow.keras import layers\n",
        "print(tf.__version__)"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "TensorFlow 2.x selected.\n",
            "2.1.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M8TJM82UX7su",
        "colab_type": "code",
        "outputId": "956c765e-6983-4d62-f24d-204294c7aa11",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 275
        }
      },
      "source": [
        "# Import functions from tensorflow_docs after installing it\n",
        "!pip install git+https://github.com/tensorflow/docs\n",
        "import tensorflow_docs as tfdocs\n",
        "import tensorflow_docs.plots\n",
        "import tensorflow_docs.modeling"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting git+https://github.com/tensorflow/docs\n",
            "  Cloning https://github.com/tensorflow/docs to /tmp/pip-req-build-uc76o1pn\n",
            "  Running command git clone -q https://github.com/tensorflow/docs /tmp/pip-req-build-uc76o1pn\n",
            "Requirement already satisfied (use --upgrade to upgrade): tensorflow-docs==0.0.0 from git+https://github.com/tensorflow/docs in /usr/local/lib/python3.6/dist-packages\n",
            "Requirement already satisfied: astor in /tensorflow-2.1.0/python3.6 (from tensorflow-docs==0.0.0) (0.8.1)\n",
            "Requirement already satisfied: absl-py in /tensorflow-2.1.0/python3.6 (from tensorflow-docs==0.0.0) (0.9.0)\n",
            "Requirement already satisfied: six in /tensorflow-2.1.0/python3.6 (from tensorflow-docs==0.0.0) (1.14.0)\n",
            "Requirement already satisfied: pathlib2 in /usr/local/lib/python3.6/dist-packages (from tensorflow-docs==0.0.0) (2.3.5)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from tensorflow-docs==0.0.0) (3.13)\n",
            "Building wheels for collected packages: tensorflow-docs\n",
            "  Building wheel for tensorflow-docs (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for tensorflow-docs: filename=tensorflow_docs-0.0.0-cp36-none-any.whl size=80412 sha256=9e7d622d72db98dc198d3eaff7f0e747d73a05fd73b53146157c35bbddd7cc64\n",
            "  Stored in directory: /tmp/pip-ephem-wheel-cache-u8fhpd6u/wheels/eb/1b/35/fce87697be00d2fc63e0b4b395b0d9c7e391a10e98d9a0d97f\n",
            "Successfully built tensorflow-docs\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3bAedq0NWThz",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Download the daset with keras.utils.get_file\n",
        "dataset_path = keras.utils.get_file(\"housing.data\", \"https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CTetrCMSca0w",
        "colab_type": "text"
      },
      "source": [
        "## Boston house prices dataset\n",
        "\n",
        "#### Characteristics\n",
        "* Number of Instances: 506\n",
        "* The first 13 features are numeric/categorical predictive features. \n",
        "* The last one (attribute 14): Median Value is the target variable.\n",
        "\n",
        "#### Attributes\n",
        "\n",
        "1. CRIM per capita crime rate by town\n",
        "2. ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n",
        "3. INDUS proportion of non-retail business acres per town\n",
        "4. CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
        "5. NOX nitric oxides concentration (parts per 10 million)\n",
        "6. RM average number of rooms per dwelling\n",
        "7. AGE proportion of owner-occupied units built prior to 1940\n",
        "8. DIS weighted distances to five Boston employment centres\n",
        "9. RAD index of accessibility to radial highways\n",
        "10. TAX full-value property-tax rate per \\$10,000\n",
        "11. PTRATIO pupil-teacher ratio by town\n",
        "12. B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
        "13. LSTAT \\% lower status of the population\n",
        "14. MEDV Median value of owner-occupied homes in \\$1000’s [target attribute]"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U3Pv_Om-WwHN",
        "colab_type": "code",
        "outputId": "351ce6a4-b542-4ba0-f482-3398e1bc3d24",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 359
        }
      },
      "source": [
        "column_names = ['CRIM','ZN','INDUS','CHAS','NOX',\n",
        "                'RM', 'AGE', 'DIS','RAD','TAX','PTRATION', 'B', 'LSTAT', 'MEDV']\n",
        "raw_dataset = pd.read_csv(dataset_path, names=column_names,\n",
        "                      na_values = \"?\", comment='\\t',\n",
        "                      sep=\" \", skipinitialspace=True)\n",
        "# Create a dataset instant\n",
        "dataset = raw_dataset.copy()\n",
        "\n",
        "# This function returns last n rows from the object \n",
        "# based on position.\n",
        "dataset.tail(n=10)"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>CRIM</th>\n",
              "      <th>ZN</th>\n",
              "      <th>INDUS</th>\n",
              "      <th>CHAS</th>\n",
              "      <th>NOX</th>\n",
              "      <th>RM</th>\n",
              "      <th>AGE</th>\n",
              "      <th>DIS</th>\n",
              "      <th>RAD</th>\n",
              "      <th>TAX</th>\n",
              "      <th>PTRATION</th>\n",
              "      <th>B</th>\n",
              "      <th>LSTAT</th>\n",
              "      <th>MEDV</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>496</th>\n",
              "      <td>0.28960</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.69</td>\n",
              "      <td>0</td>\n",
              "      <td>0.585</td>\n",
              "      <td>5.390</td>\n",
              "      <td>72.9</td>\n",
              "      <td>2.7986</td>\n",
              "      <td>6</td>\n",
              "      <td>391.0</td>\n",
              "      <td>19.2</td>\n",
              "      <td>396.90</td>\n",
              "      <td>21.14</td>\n",
              "      <td>19.7</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>497</th>\n",
              "      <td>0.26838</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.69</td>\n",
              "      <td>0</td>\n",
              "      <td>0.585</td>\n",
              "      <td>5.794</td>\n",
              "      <td>70.6</td>\n",
              "      <td>2.8927</td>\n",
              "      <td>6</td>\n",
              "      <td>391.0</td>\n",
              "      <td>19.2</td>\n",
              "      <td>396.90</td>\n",
              "      <td>14.10</td>\n",
              "      <td>18.3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>498</th>\n",
              "      <td>0.23912</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.69</td>\n",
              "      <td>0</td>\n",
              "      <td>0.585</td>\n",
              "      <td>6.019</td>\n",
              "      <td>65.3</td>\n",
              "      <td>2.4091</td>\n",
              "      <td>6</td>\n",
              "      <td>391.0</td>\n",
              "      <td>19.2</td>\n",
              "      <td>396.90</td>\n",
              "      <td>12.92</td>\n",
              "      <td>21.2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>499</th>\n",
              "      <td>0.17783</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.69</td>\n",
              "      <td>0</td>\n",
              "      <td>0.585</td>\n",
              "      <td>5.569</td>\n",
              "      <td>73.5</td>\n",
              "      <td>2.3999</td>\n",
              "      <td>6</td>\n",
              "      <td>391.0</td>\n",
              "      <td>19.2</td>\n",
              "      <td>395.77</td>\n",
              "      <td>15.10</td>\n",
              "      <td>17.5</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>500</th>\n",
              "      <td>0.22438</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.69</td>\n",
              "      <td>0</td>\n",
              "      <td>0.585</td>\n",
              "      <td>6.027</td>\n",
              "      <td>79.7</td>\n",
              "      <td>2.4982</td>\n",
              "      <td>6</td>\n",
              "      <td>391.0</td>\n",
              "      <td>19.2</td>\n",
              "      <td>396.90</td>\n",
              "      <td>14.33</td>\n",
              "      <td>16.8</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>501</th>\n",
              "      <td>0.06263</td>\n",
              "      <td>0.0</td>\n",
              "      <td>11.93</td>\n",
              "      <td>0</td>\n",
              "      <td>0.573</td>\n",
              "      <td>6.593</td>\n",
              "      <td>69.1</td>\n",
              "      <td>2.4786</td>\n",
              "      <td>1</td>\n",
              "      <td>273.0</td>\n",
              "      <td>21.0</td>\n",
              "      <td>391.99</td>\n",
              "      <td>9.67</td>\n",
              "      <td>22.4</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>502</th>\n",
              "      <td>0.04527</td>\n",
              "      <td>0.0</td>\n",
              "      <td>11.93</td>\n",
              "      <td>0</td>\n",
              "      <td>0.573</td>\n",
              "      <td>6.120</td>\n",
              "      <td>76.7</td>\n",
              "      <td>2.2875</td>\n",
              "      <td>1</td>\n",
              "      <td>273.0</td>\n",
              "      <td>21.0</td>\n",
              "      <td>396.90</td>\n",
              "      <td>9.08</td>\n",
              "      <td>20.6</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>503</th>\n",
              "      <td>0.06076</td>\n",
              "      <td>0.0</td>\n",
              "      <td>11.93</td>\n",
              "      <td>0</td>\n",
              "      <td>0.573</td>\n",
              "      <td>6.976</td>\n",
              "      <td>91.0</td>\n",
              "      <td>2.1675</td>\n",
              "      <td>1</td>\n",
              "      <td>273.0</td>\n",
              "      <td>21.0</td>\n",
              "      <td>396.90</td>\n",
              "      <td>5.64</td>\n",
              "      <td>23.9</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>504</th>\n",
              "      <td>0.10959</td>\n",
              "      <td>0.0</td>\n",
              "      <td>11.93</td>\n",
              "      <td>0</td>\n",
              "      <td>0.573</td>\n",
              "      <td>6.794</td>\n",
              "      <td>89.3</td>\n",
              "      <td>2.3889</td>\n",
              "      <td>1</td>\n",
              "      <td>273.0</td>\n",
              "      <td>21.0</td>\n",
              "      <td>393.45</td>\n",
              "      <td>6.48</td>\n",
              "      <td>22.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>505</th>\n",
              "      <td>0.04741</td>\n",
              "      <td>0.0</td>\n",
              "      <td>11.93</td>\n",
              "      <td>0</td>\n",
              "      <td>0.573</td>\n",
              "      <td>6.030</td>\n",
              "      <td>80.8</td>\n",
              "      <td>2.5050</td>\n",
              "      <td>1</td>\n",
              "      <td>273.0</td>\n",
              "      <td>21.0</td>\n",
              "      <td>396.90</td>\n",
              "      <td>7.88</td>\n",
              "      <td>11.9</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        CRIM   ZN  INDUS  CHAS    NOX  ...    TAX  PTRATION       B  LSTAT  MEDV\n",
              "496  0.28960  0.0   9.69     0  0.585  ...  391.0      19.2  396.90  21.14  19.7\n",
              "497  0.26838  0.0   9.69     0  0.585  ...  391.0      19.2  396.90  14.10  18.3\n",
              "498  0.23912  0.0   9.69     0  0.585  ...  391.0      19.2  396.90  12.92  21.2\n",
              "499  0.17783  0.0   9.69     0  0.585  ...  391.0      19.2  395.77  15.10  17.5\n",
              "500  0.22438  0.0   9.69     0  0.585  ...  391.0      19.2  396.90  14.33  16.8\n",
              "501  0.06263  0.0  11.93     0  0.573  ...  273.0      21.0  391.99   9.67  22.4\n",
              "502  0.04527  0.0  11.93     0  0.573  ...  273.0      21.0  396.90   9.08  20.6\n",
              "503  0.06076  0.0  11.93     0  0.573  ...  273.0      21.0  396.90   5.64  23.9\n",
              "504  0.10959  0.0  11.93     0  0.573  ...  273.0      21.0  393.45   6.48  22.0\n",
              "505  0.04741  0.0  11.93     0  0.573  ...  273.0      21.0  396.90   7.88  11.9\n",
              "\n",
              "[10 rows x 14 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nf8QJRMeh910",
        "colab_type": "text"
      },
      "source": [
        "### Data processing (train/test split)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Vd0uyKsFgyQ0",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Split data into train/test\n",
        "# p = training data portion\n",
        "p=0.8\n",
        "trainDataset = dataset.sample(frac=p,random_state=0)\n",
        "testDataset = dataset.drop(trainDataset.index)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4vC8cz0chjL1",
        "colab_type": "text"
      },
      "source": [
        "## linear regression with one variable\n",
        "\n",
        "Here, we desire to model the relationship between the dependent variable and the independent variable. In the linear regression with one variable, *we only have **one** independent variable*.\n",
        "\n",
        "* Independent variable: 'RM'\n",
        "* Dependend varaible: 'MEDV'\n",
        "\n",
        "In a simple work, we want to **predict** the Median value of owner-occupied homes in $1000’s [target attribute] based on average number of rooms per dwelling (RM)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KY0vmL_PhIPn",
        "colab_type": "text"
      },
      "source": [
        "### Plot dependecy to one variable (linear regression with one variable)\n",
        "\n",
        "Here we want to plot the MEDV against RM, i.e, visualize how MEDV is changed by changing RM. Basically we have $MEDV=f(RM)$ and we desire to estimate the function $f(.)$ using a linear regression.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "E_R3ADmzgmo0",
        "colab_type": "code",
        "outputId": "5983cd35-4f35-406a-df6d-a9a5d6954a7b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "# Visual representation of training data\n",
        "import matplotlib.pyplot as plt\n",
        "fig, ax = plt.subplots()\n",
        "# With .pop() command, the associated columns are extracted.\n",
        "x = trainDataset['RM']\n",
        "y = trainDataset['MEDV']\n",
        "ax.scatter(x, y, edgecolors=(0, 0, 0))\n",
        "ax.set_xlabel('RM')\n",
        "ax.set_ylabel('MEDV')\n",
        "plt.show()"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "M-EpBay_M3_X",
        "colab_type": "text"
      },
      "source": [
        "### Split train/test data and labels for linear regression for one variable experiments\n",
        "\n",
        "We can use two approach to access the columns:\n",
        "\n",
        "1. **Pop command:** It returns item and drops it from frame. After using trainDataset.pop('RM'), the 'RM' column does not exist in the trainDataset frame anymore!\n",
        "2. Using the **indexing with label**. Example trainDataset['RM']\n",
        "\n",
        "We use approach **(2)**."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "dgOBhSaniDHx",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Pop command return item and drop it from frame.\n",
        "# After using trainDataset.pop('RM'), the 'RM' column \n",
        "# does not exist in the trainDataset frame anymore!\n",
        "trainDataOne = trainDataset['RM']\n",
        "trainLabelOne = trainDataset['MEDV']\n",
        "testDataOne = testDataset['RM']\n",
        "testLabelOne = testDataset['MEDV']"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9X6hRnkpRoPY",
        "colab_type": "text"
      },
      "source": [
        "### Data normalization/standardization\n",
        "\n",
        "*It is not needed for simple linear regression (linear regression with one variable).*\n",
        "\n",
        "1. **Standardization**: Standardizing the features around the center and 0 with a standard deviation of 1. Assume we have features that have different units. So just becasue of the scaling do not contribute equally to the analysis and create misleading result. Formula: $\\hat{X}=\\frac{X-\\mu}{\\sigma}$\n",
        "\n",
        "2. **Normalization**: Normalization aims to put the values of different features to a common scale (usually [0,1] or [-1,1]). This is used when features have different ranges but the same units. **Example**: Assume we have an RGB image. *Each channel has a different range but all channels have the same units: image pixel*! Formula: $\\hat{X}=\\frac{X-X_{min}}{X_{max}-X_{min}}$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "VXA8J28QWYMH",
        "colab_type": "text"
      },
      "source": [
        "### Create Model\n",
        "\n",
        "1. The architecture of the model\n",
        "2. Defining the optimizer\n",
        "3. Compile the model and return the graph"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "okLiiirkWaot",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 255
        },
        "outputId": "f6eb7131-91f0-4bf6-f011-21be976fbf85"
      },
      "source": [
        "\n",
        "model = keras.Sequential([\n",
        "      layers.Dense(128, activation='relu', input_shape=(1,)),\n",
        "      layers.Dense(128, activation='relu'),\n",
        "      layers.Dense(1)\n",
        "    ])\n",
        "\n",
        "optimizer = tf.keras.optimizers.Adam(\n",
        "    learning_rate=0.001, beta_1=0.9, beta_2=0.99, epsilon=1e-05, amsgrad=False,\n",
        "    name='Adam')\n",
        "  \n",
        "  # Check: https://www.tensorflow.org/api_docs/python/tf/keras/Model\n",
        "  # loss: String (name of objective function), objective function or tf.keras.losses.Loss instance. See tf.keras.losses.\n",
        "  # optimizer: String (name of optimizer) or optimizer instance. See tf.keras.optimizers.\n",
        "  # metrics: List of metrics to be evaluated by the model during training and testing\n",
        "model.compile(loss='mse',\n",
        "              optimizer=optimizer,\n",
        "              metrics=['mae', 'mse'])\n",
        "\n",
        "# Print the model summary\n",
        "model.summary()"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"sequential\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "dense (Dense)                (None, 128)               256       \n",
            "_________________________________________________________________\n",
            "dense_1 (Dense)              (None, 128)               16512     \n",
            "_________________________________________________________________\n",
            "dense_2 (Dense)              (None, 1)                 129       \n",
            "=================================================================\n",
            "Total params: 16,897\n",
            "Trainable params: 16,897\n",
            "Non-trainable params: 0\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6ny4wr5l3M_k",
        "colab_type": "text"
      },
      "source": [
        "### Training\n",
        "Fit the model to the data\n",
        "\n",
        "* n_epochs: number of epochs\n",
        "* validation_split: keep a portion of training data for unbiased validation\n",
        "* vebore: set to 0 as we want a short summary and not all the details!!\n",
        "* callbacks: A callback is a tool to customize the behavior of a the model during training, testing, etc."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YKMSaOXnXmOT",
        "colab_type": "code",
        "outputId": "6566b224-9a72-4dd9-89d2-0a6203011456",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 306
        }
      },
      "source": [
        "# A mechanism that stops training if the validation loss is not improving for more than n_idle_epochs.\n",
        "#See https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping for details.\n",
        "n_idle_epochs = 100\n",
        "earlyStopping = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=n_idle_epochs, min_delta=0.1)\n",
        "\n",
        "n_epochs = 2000\n",
        "history = model.fit(\n",
        "  trainDataOne, trainLabelOne,\n",
        "  epochs=n_epochs, validation_split = 0.1, verbose=0,\n",
        "  callbacks=[earlyStopping,tfdocs.modeling.EpochDots()])"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "Epoch: 0, loss:545.0366,  mae:21.6368,  mse:545.0366,  val_loss:560.0960,  val_mae:21.3364,  val_mse:560.0959,  \n",
            "....................................................................................................\n",
            "Epoch: 100, loss:47.8348,  mae:4.8585,  mse:47.8348,  val_loss:87.8931,  val_mae:6.3770,  val_mse:87.8931,  \n",
            "....................................................................................................\n",
            "Epoch: 200, loss:38.6434,  mae:4.3475,  mse:38.6434,  val_loss:76.0311,  val_mae:5.3921,  val_mse:76.0311,  \n",
            "....................................................................................................\n",
            "Epoch: 300, loss:36.8273,  mae:4.1541,  mse:36.8273,  val_loss:71.5804,  val_mae:5.0611,  val_mse:71.5804,  \n",
            "....................................................................................................\n",
            "Epoch: 400, loss:36.1383,  mae:4.1833,  mse:36.1384,  val_loss:71.4148,  val_mae:5.0414,  val_mse:71.4148,  \n",
            "....................................................................................................\n",
            "Epoch: 500, loss:35.9182,  mae:4.0736,  mse:35.9182,  val_loss:72.4257,  val_mae:5.2146,  val_mse:72.4257,  \n",
            "....................................................................................................\n",
            "Epoch: 600, loss:35.7188,  mae:4.0312,  mse:35.7188,  val_loss:72.5561,  val_mae:5.2785,  val_mse:72.5561,  \n",
            "....................................................................................................\n",
            "Epoch: 700, loss:35.1094,  mae:4.1192,  mse:35.1094,  val_loss:70.7851,  val_mae:5.0850,  val_mse:70.7851,  \n",
            "...................................................."
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uVvegIVGXvbv",
        "colab_type": "code",
        "outputId": "ff65508b-7a2e-4d95-8023-cdc25c9dbc09",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 300
        }
      },
      "source": [
        "plotter = tfdocs.plots.HistoryPlotter(smoothing_std=2)\n",
        "plotter.plot({'': history}, metric = \"mae\")\n",
        "plt.ylim([2, 10])\n",
        "plt.ylabel('MEDV')"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'MEDV')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wu3b5tPiZZTR",
        "colab_type": "code",
        "outputId": "86bff74d-f2fa-4a37-91ee-f88295272320",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 283
        }
      },
      "source": [
        "predictions = model.predict(testDataOne).flatten()\n",
        "a = plt.axes(aspect='equal')\n",
        "plt.scatter(predictions, testLabelOne)\n",
        "plt.xlabel('True Values [MPG]')\n",
        "plt.ylabel('Predictions [MPG]')\n",
        "lims = [0, 50]\n",
        "plt.xlim(lims)\n",
        "plt.ylim(lims)\n",
        "_ = plt.plot(lims, lims)"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    }
  ]
}